home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 4
/
FM Towns Free Software Collection 4 - Disc 1.iso
/
pao
/
towns
/
paolib
/
sample
/
kybtest.c
< prev
next >
Wrap
Text File
|
1991-10-18
|
4KB
|
144 lines
/** << High C >> **************************************************************
**
** TEST プログラム( KYB_read , 画面出力 )
**
** < HISTORY >
** 1991.03.06 : CREATE
**
** < note > : TABS = 4
**
** Programmed by Y.Hirata ( Nifty ID : NAB03321 )
**
******************************************************************************/
pragma Off (Floating_point) ;
#include <stdio.h>
#include <dos.h>
#include <msdos.cf>
#include <egb.h>
#include <stdlib.h>
#include <string.h>
#include <fmc.h>
#include "hc.h"
#include "key.h"
#define DEBUG FALSE
#define GworkSize 1536 /* グラフィック作業域のサイズ */
char Gwork[GworkSize] ; /* グラフィック作業域 */
/* 漢字の第1バイトかのチェック */
#define iskanji(c) ((0x81 <= c && c <= 0x9F) || (0xE0 <= c && c <= 0xFC))
/********************************* 初期化 **********************************/
void ginit()
{
TEXT_init( Gwork,GworkSize ) ; /* EGB 初期化 */
GRP_viewport( 0,0,1023,511 ) ; /* View Port SET */
TEXT_cursor( TRUE ) ; /* カーソル表示 */
}
/***************************** ★ メイン ★ ********************************/
void main()
{
struct _ENCODE encode ;
union _MOJI moji ;
char kanji ;
char buf[3] ;
ginit() ; /* EGB 初期化 */
KYB_clrbuf() ; /* バッファクリア */
TEXT_color( C_HGREEN ) ;
TEXT_printf( "何かキーを押して下さい。 " ) ;
TEXT_color( C_HRED ) ;
TEXT_printf( "ESCキー" ) ;
TEXT_color( C_HGREEN ) ;
TEXT_printf( " で終了します。\n" ) ;
kanji = 0 ;
TEXT_color( C_HWHITE ) ;
TEXT_backcolor( C_BLUE ) ;
do {
moji.x = KYB_read( 0,(unsigned int *)&encode ) ;
if ( !kanji ) {
if ( iskanji(moji.hl.l) ) { /* 漢字が入力された? */
kanji ++ ;
}
}
#if DEBUG
TEXT_color( C_HYELLOW ) ;
TEXT_printf( "\n----------- KYB_read() test -----------\n" ) ;
TEXT_color( C_HGREEN ) ;
TEXT_printf( "moji :\n" ) ;
TEXT_color( C_GREEN ) ;
TEXT_printf( "inform = %02xH (High)\n",moji.hl.h ) ;
TEXT_printf( "code = " ) ;
TEXT_color( C_WHITE ) ;
TEXT_printf( "%c",moji.hl.l ) ;
TEXT_color( C_GREEN ) ;
TEXT_printf( "(%02xH) (Low)\n",moji.hl.l ) ;
TEXT_color( C_HGREEN ) ;
TEXT_printf( "encode :\n" ) ;
TEXT_color( C_GREEN ) ;
TEXT_printf( "keyadr = %02xH (High)\n",encode.keyadr ) ;
TEXT_printf( "shift = %02xH (Low )\n",encode.shift ) ;
TEXT_color( C_HWHITE ) ;
#endif
if ( encode.keyadr == 0x01 ) break ; /* 終了 */
if ( kanji == 1 ) {
buf[0] = moji.hl.l ;
kanji ++ ;
} else if ( kanji == 2 ) {
buf[1] = moji.hl.l ;
buf[2] = '\0' ;
kanji = 0 ;
TEXT_printf( "%s",buf ) ;
} else {
if ( (encode.shift & 0x04) == 0x04 ) { /* SHIFT KEY ON */
if ( moji.hl.l == KCODE_UP ) {
TEXT_revscroll( NULL ) ;
} else if ( moji.hl.l == KCODE_DOWN ) {
TEXT_scroll( NULL ) ;
} else {
if ( moji.hl.l == 0x0F ) { /* CTRL+O */
if ( TEXTcrflg ) TEXTcrflg = FALSE ;
else TEXTcrflg = TRUE ;
}
if ( moji.hl.l == KCODE_CR )
TEXT_printf( "\n" ) ;
else
TEXT_printf( "%c",moji.hl.l ) ;
}
} else {
if ( moji.hl.l == 0x0F ) { /* CTRL+O */
if ( TEXTcrflg ) TEXTcrflg = FALSE ;
else TEXTcrflg = TRUE ;
}
if ( moji.hl.l == KCODE_CR )
TEXT_printf( "\n" ) ;
else
TEXT_printf( "%c",moji.hl.l ) ;
}
}
} while ( encode.keyadr != 0x01 ) ;
TEXT_color( C_HGREEN ) ;
TEXT_printf( "\nプログラムを終了します。\n" ) ;
TEXT_color( C_HRED ) ;
TEXT_printf( "Program END!!!\n" ) ;
KYB_clrbuf() ; /* バッファクリア */
TEXT_color( C_HGREEN ) ;
TEXT_printf( "何かキーを押して下さい。 " ) ;
moji.x = KYB_read( 0,(unsigned int *)&encode ) ;
/*
** コンソール画面に戻す
*/
EGB_init( Gwork,GworkSize ) ; /* ゴミを消すため EGB 初期化 */
EGB_clearScreen( Gwork ) ;
coninit() ;
}